﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cofe.Core.Property;

namespace Cofe.Core.EntryType
{
    /// <summary>
    /// Identify the type of an entry, which is recognizable by IEntryTypeInfoProvider.
    /// A key should be in format {Category}_{type} //type should be all lowercase.    
    /// </summary>
    public interface IEntryTypeIdentifier : ICofeService
    {
        string GetEntryTypeKey(IPropertyHost propertyHost);
    }

    /// <summary>
    /// Based on the entry type key (From IEntryTypeIdentifier), provide entry type info 
    /// (in property pairs) based on the key.  There can be multiple IEntryTypeInfoProvider 
    /// for one entry type key.
    /// </summary>
    public interface IEntryTypeInfoProvider : ICofeService
    {
        Task<PropertyPair[]> GetEntryTypeInfoAsync(string entryTypeKey);
    }
}
